Star History 2022 年度精选|平台工程开源项目
Backstage
https://github.com/backstage/backstage
Elasticsearch
https://github.com/elastic/elasticsearch
Elasticsearch 是一个实时的分布式存储、搜索、分析引擎,2010 年发布了最早的版本,是在 Apache Lucene 的基础上开发而成,特性正如其名 elastic 所指:有弹性,灵活,可伸缩的。
2022 年,Elastic 宣布了 Elastic 8.0,这个引擎变得更快,更简洁,更易扩展了。在产品拓展他们也是毫不拖泥带水:逐渐增强 Elastic Cloud 性能的同时也在 Roadmap 中加上了近期最火的关键词:Stateless Elasticsearch,使服务变成无状态,实现弹性云平台。
不过,我们当然也不可能忘了 Elastic 和 AWS 的争议:AWS fork 并商业化(别人的)开源项目,而 Elastic 则变更开源协议,限制用户正常使用客户端。虽然他们最后达成了和解,但是不禁让人想问:在开源的世界,难道用户才是韭菜?
GitLab
https://github.com/gitlabhq/gitlabhq
GitLab 的出生是一个代码托管项目,方便团队开发与协作,但现在已经拓展为一个 DevSecOps Platform。DevSecOps 也就是在 DevOps 之上加了 Security:通常来说,安全在开发生命周期的最后阶段,但代码被退回给开发者修复时,会增加成本和时间,DevSecOps 使用了 Shift-left approach(向左转移),在 DevOps 生命周期的早期就拥抱安全,通过使用工具和方法来保护和监控实时应用程序,将安全实践渗透到软件开发的每个阶段,直到部署。
此外,GitLab 很出名的是他们公开的 Handbook (https://about.gitlab.com/handbook/),可以理解为是他们的员工手册,从这份有 2000+ 页且归类恰当的文档中,我们能窥探一下 GitLab 各个部门工作的流程/协同方式/使用工具,甚至公司文化,内容相当具体和丰富 - 对于刚建立不久需要创建一些规章制度以及 SOP 的创业公司来说,这本 Handbook 非常 handy 有用。
Grafana
https://github.com/grafana/grafana
Grafana 是一个监控仪表系统。它简化了监控的复杂度:提供需要监控的数据,Grafana 就可以生成各种可视化仪表。Grafana 在 2014 年由 Torkel Ödegaard(Grafana Labs Co-Founder)首次发布,当时是商旅公司 Orbitz 的一个项目的分支。后来的故事我们都知道了:2019 年 Grafana Labs 募集了 $24M A 轮融资后,走上了一发不可收拾的道路,最近一次融资是去年 4 月的 $240M D 轮。
2022 年底 Grafana Labs 在年度大会 ObservabilityCON 宣布开源了两个新项目:用于持续分析 (Continuous Profiling) 的开源数据库 Phlare,和用于前端应用可观测性的 Faro。值得一提的是,Phlare 是一个 Hackathon 项目提供的灵感:项目展示了持续分析在跟度量、日志和跟踪(metrics, logs, and traces)相连接时的价值,于是他们决定着手创建一个用于持续分析遥测的数据库。
Kong
https://github.com/Kong/kong
Kong 是一个开源的云原生 API 网关项目,用户通过它可以对流量进行分析,管理和不同 API 相关的开发人员、消费者、合作伙伴和客户等。从 2010 年至今 Kong 一共募集了 6 轮总计 $169.1M 的融资。2022 年,Kong 发布了 Kong Gateway 3.0,在 AWS Marketplace 推出了 SaaS API 平台:Kong Konnect。
Kong 最一开始做的是一个 API 聚合平台/市场,那时公司和产品的名字也叫 Mashape,Kong 这个 API 网关项目是后来孵化出来的,很快就成为了最核心的业务。而本身的聚合平台/市场这块业务之后又卖给了 RapidAPI。也堪称近几年开源届一个经典的转型案例。
Kubernetes
https://github.com/kubernetes/kubernetes
虽然有点烂大街了,但讲平台工程不提 Kubernetes 显然是不完整的。Kubernetes 是最流行的容器编排系统之一,用于自动化软件部署,扩展和管理。最初由谷歌设计,现在由云原生计算基金会(CNCF)维护(事实上 CNCF 就是从 Kubernetes 开始起家的)。
Kubernetes 有一个庞大的生态系统,是平台工程里的平台。本文列举的项目中,除了 Terraform 外,Kubernetes 是其他所有项目的主要运行平台。而 Terraform 同样也支持通过 Terraform Kubernetes Provider 和 Kubernetes 进行交互,而且这是由 HashiCorp 官方维护的 Provider,和三大云厂商起名。
冷知识 #1:Kubernetes 名字源于古希腊语中的「舵手」,这也解释了它的 logo ☸️。同时和 Container (集装箱)概念也有连接,当然可能也多少有点针对当年的竞品 Docker Swarm 的意思。
冷知识 #2:K8s 是将 Kubernetes 中间 8 个字母「ubernete」替换为了数字「8」,同理可将 internationalizaiton 变成 i18n 🤷。
如果想了解更多关于 Kubernetes 的故事,可以看看 Honeypot 制作的 Kubernetes 纪录片(https://youtu.be/BE77h7dmoQU)!
Sourcegraph
Prometheus
https://github.com/prometheus/prometheus
Prometheus 是一款开源基于时序数据库的系统监控和报警系统。2022 年庆祝了十岁生日,也是 CNCF 的一员。它早在 2012 年被 SoundCloud 开源(但是看完 The History of Prometheus at SoundCloud: https://promcon.io/2016-berlin/talks/the-history-of-prometheus-at-soundcloud/ 之后发现好像是它们一位工程师写的监测工具在 SoundCloud 被用起来了,用着感觉还不错,然后被公司开源了,随后社区一路壮大。
Prometheus 是古希腊神话中泰坦一族的神明之一,名字意思是「先见之明」,应该就是项目名字的来源吧。Prometheus 也是继 Kubernetes 之后的第二个 CNCF 项目,看来也是颇有先见之明呀。关于 Prometheus,同样也有一期 Honeypot 出品的 Documentary (https://youtu.be/rT4fJNbfe14),值得一看。
Temporal
https://github.com/temporalio/temporal
Temporal 应该是本文中相对低调的一个项目,但也承担了平台工程中核心的一环。它是一个微服务任务调度执行平台,以一种有弹性的方式执行应用逻辑单元、工作流,自动处理间歇性故障,并重试失败的操作(这应该是它的卖点💡)。虽然它在 2020.2 发布了第一个 Release,不过创始人早在 Uber 就建立了 Cadence 工作流(uber/cadence),以解决 Uber 的工作流/编排问题,而 Temporal 是 Cadence 的一个商业化 fork 版本。
能看出来他们的创始者也是有强烈个人风格的人,去年的 Temporal 年度大会 Relay 的主视觉是这样的,好特别😍。
Terraform
平台工程是未来
最底层的运行平台 - Kubernetes
最上层的软件目录和开发者门户 - Backstage
API 网关 - Kong
通用搜索 - Elasticsearch
代码托管 - GitLab
代码搜索 - Sourcegraph
监控/告警 - Prometheus
仪表盘 - Grafana
任务调度执行 - Temporal
把上面的这些资源都管好 - Terraform
安全平台(登录,网络 VPN,Audit Log,入侵检测等)
资源平台(扩缩容,调度,FinOps 等)
配置平台(各种应用配置,feature Flag 等)
数据库开发平台(针对各种数据库的变更,查询,管理操作)
平台工程开源项目